package trastienda.service;


import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import trastienda.dao.UsuarioDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.excepcion.LoginExcepcion;
import trastienda.modelo.Rol;
import trastienda.modelo.Usuario;

//COMENTE ALGUNOS METODOS

@Service
public class SeguridadServiceImpl implements SeguridadService {

	@Autowired
	private UsuarioDAO usuarioDAO;
	
	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

	public Usuario validar(String idUsuario, String clave) throws DAOExcepcion,
			LoginExcepcion {
		return usuarioDAO.validar(idUsuario, clave);
	}

	public Collection<Usuario> buscarPorNombre(String nombre)	throws DAOExcepcion {
		return usuarioDAO.buscarPorNombre(nombre);
	}

	//@Override
	public Usuario obtenerPorIdUsuario(String idUsuario) throws DAOExcepcion {
		return usuarioDAO.obtenerPorIdUsuario(idUsuario);
	}

	//@Override
	public Usuario insertar(Usuario vo) throws DAOExcepcion {
		return usuarioDAO.insertar(vo);
	}

	//@Override
	public Usuario actualizar(Usuario vo) throws DAOExcepcion {
		return usuarioDAO.actualizar(vo);
	}

	//@Override
	public void eliminar(String idUsuario) throws DAOExcepcion {
		usuarioDAO.eliminar(idUsuario);		
	}

	//@Override
	public Collection<Usuario> listarTodos() throws DAOExcepcion {
		return usuarioDAO.listarTodos();
	}
	
	//@Override
	//Es necesario configurar el applicationContext para que pueda leer el metodo @transactional
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {DAOExcepcion.class})
	public Usuario insertarUsuarioRol(Usuario vo, Rol rol) throws DAOExcepcion {
		
		Usuario u =  usuarioDAO.insertar(vo);		
		//usuarioDAO.agregarRol(vo, rol);		
		return u;
	}
	

}


